string与byte[]互转
// 将字符串格式化为UTF8编码的字节
var writeUTF = function (str, isGetBytes=true) {
var back = [];
var byteSize = 0;
for (var i = 0; i < str.length; i++) {
var code = str.codePointAt(i);
if (0x00 12)));
back.push((128 |(63 & (code>>6)));
back.push((128 |(63 & (code)));
}
}
for (i = 0; i < back.length; i++) {
back[i] &= 0xff;
}
if (isGetBytes) {
return back
}
if (byteSize > 8, byteSize & 0xff].concat(back);
}
}
// 读取UTF8编码的字节,并专为Unicode的字符串
var readUTF = function (arr) {
if (typeof arr === 'string') {
return arr;
}
var UTF = '', _arr = this.init(arr);
for (var i = 0; i < _arr.length; i++) {
var one = _arr[i].toString(2),
v = one.match(/^1+?(?=0)/);
if (v && one.length == 8) {
var bytesLength = v[0].length;
var store = _arr[i].toString(2).slice(7 - bytesLength);
for (var st = 1; st < bytesLength; st++) {
store += _arr[st + i].toString(2).slice(2)
}
UTF += String.fromCharCode(parseInt(store, 2));
i += bytesLength - 1
} else {
UTF += String.fromCharCode(_arr[i])
}
}
return UTF
}
hex(十六进制)和byte[]互转
//hex=>bytes[]
export const hex2bytes=(hex)=>{
let pos=0,len=hex.length;
if(len%2!=0){
return null
}
len/2;
let bytes=new Array();
for(let i=0;ihex
export const bytes2hex=(bytes)=>{
let hex="",len=bytes.length;
for(let i=0;i |